﻿/*
 Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add('button', function (b) {
  function d(a) {
    var b = this.getValue();
    b
      ? ((a.attributes[this.id] = b),
        'name' == this.id && (a.attributes['data-cke-saved-name'] = b))
      : (delete a.attributes[this.id],
        'name' == this.id && delete a.attributes['data-cke-saved-name']);
  }
  return {
    title: b.lang.forms.button.title,
    minWidth: 350,
    minHeight: 150,
    onShow: function () {
      delete this.button;
      var a = this.getParentEditor().getSelection().getSelectedElement();
      a &&
        a.is('input') &&
        a.getAttribute('type') in { button: 1, reset: 1, submit: 1 } &&
        ((this.button = a), this.setupContent(a));
    },
    onOk: function () {
      var a = this.getParentEditor(),
        b = this.button,
        d = !b,
        c = b
          ? CKEDITOR.htmlParser.fragment.fromHtml(b.getOuterHtml()).children[0]
          : new CKEDITOR.htmlParser.element('input');
      this.commitContent(c);
      var e = new CKEDITOR.htmlParser.basicWriter();
      c.writeHtml(e);
      c = CKEDITOR.dom.element.createFromHtml(e.getHtml(), a.document);
      d
        ? a.insertElement(c)
        : (c.replace(b), a.getSelection().selectElement(c));
    },
    contents: [
      {
        id: 'info',
        label: b.lang.forms.button.title,
        title: b.lang.forms.button.title,
        elements: [
          {
            id: 'name',
            type: 'text',
            bidi: !0,
            label: b.lang.common.name,
            'default': '',
            setup: function (a) {
              this.setValue(
                a.data('cke-saved-name') || a.getAttribute('name') || ''
              );
            },
            commit: d,
          },
          {
            id: 'value',
            type: 'text',
            label: b.lang.forms.button.text,
            accessKey: 'V',
            'default': '',
            setup: function (a) {
              this.setValue(a.getAttribute('value') || '');
            },
            commit: d,
          },
          {
            id: 'type',
            type: 'select',
            label: b.lang.forms.button.type,
            'default': 'button',
            accessKey: 'T',
            items: [
              [b.lang.forms.button.typeBtn, 'button'],
              [b.lang.forms.button.typeSbm, 'submit'],
              [b.lang.forms.button.typeRst, 'reset'],
            ],
            setup: function (a) {
              this.setValue(a.getAttribute('type') || '');
            },
            commit: d,
          },
        ],
      },
    ],
  };
});
